package web

import (
	"encoding/json"
	"time"

	"gitee.com/xgotool/sqlite-logs-more/service/logs"
	"gitee.com/xiaoyutab/xgotool/xgin"
	"gitee.com/xiaoyutab/xgotool/xgodb"
	"gitee.com/xiaoyutab/xgotool/xstring"
	"github.com/gin-gonic/gin"
)

// 搜索日志信息【根据日志中的关键词和日期进行搜索】
func SearchLogInfo(c *gin.Context) *xgin.Response {
	type temp_struct struct {
		Id  json.Number `json:"id" form:"id" xml:"id"`    // 日志条目ID
		Did json.Number `json:"did" form:"did" xml:"did"` // 设备ID
	}
	temp := temp_struct{}
	if err := xgin.Bind(c, &temp); err != nil {
		return xgin.Resp().Error(err)
	}
	type temp_struct_used struct {
		Id  int64 // 日志条目ID
		Did int64 // 设备ID
	}
	param := temp_struct_used{}
	param.Id = xstring.JInt64(temp.Id)   // 日志条目ID
	param.Did = xstring.JInt64(temp.Did) // 设备ID
	// ApiPost软件所需要的参数描述格式：
	// [{"is_checked":1,"key":"id","type":"Text","not_null":1,"field_type":"Integer","value":"","description":"日志条目ID"},{"is_checked":1,"key":"did","type":"Text","not_null":1,"field_type":"Integer","value":"","description":"设备ID"}]
	// 其他软件所需要的KV键值对描述
	// {"did":"设备ID","id":"日志条目ID"}
	// 本命令执行参数【留做备份，以便后期使用/修改】
	// id int64 "日志条目ID" 1 did int64 "设备ID" 1
	// id参数必填性效验
	if param.Id == 0 {
		return xgin.Resp().ErrorString("日志条目ID(id) 不能为空")
	}
	// did参数必填性效验
	if param.Did == 0 {
		return xgin.Resp().ErrorString("设备ID(did) 不能为空")
	}

	lis, err := logs.AllLogInfo(param.Id, param.Did, time.Second*time.Duration(xgodb.GetInt("RUN_LOG_INFO_SEARCH")))
	if err != nil {
		return xgin.Resp().Error(err)
	}
	return xgin.Resp().NoPage(c, lis, len(lis))
}
